package leetcode.string;

/**
 * 当一个字符串满足如下条件时，我们称它是 美丽的 ：
 * <p>
 * 所有 5 个英文元音字母（'a' ，'e' ，'i' ，'o' ，'u'）都必须 至少 出现一次。
 * 这些元音字母的顺序都必须按照 字典序 升序排布（也就是说所有的 'a' 都在 'e' 前面，所有的 'e' 都在 'i' 前面，以此类推）
 * 比方说，字符串 "aeiou" 和 "aaaaaaeiiiioou" 都是 美丽的 ，但是 "uaeio" ，"aeoiu" 和 "aaaeeeooo" 不是美丽的 。
 * <p>
 * 给你一个只包含英文元音字母的字符串 word ，请你返回 word 中 最长美丽子字符串的长度 。如果不存在这样的子字符串，请返回 0 。
 * <p>
 * 子字符串 是字符串中一个连续的字符序列。
 * <p>
 *  
 * <p>
 * 示例 1：
 * <p>
 * 输入：word = "aeiaaioaaaaeiiiiouuuooaauuaeiu"
 * 输出：13
 * 解释：最长子字符串是 "aaaaeiiiiouuu" ，长度为 13 。
 * 示例 2：
 * <p>
 * 输入：word = "aeeeiiiioooauuuaeiou"
 * 输出：5
 * 解释：最长子字符串是 "aeiou" ，长度为 5 。
 * 示例 3：
 * <p>
 * 输入：word = "a"
 * 输出：0
 * 解释：没有美丽子字符串，所以返回 0 。
 *  
 * <p>
 * 提示：
 * <p>
 * 1 <= word.length <= 5 * 105
 * word 只包含字符 'a'，'e'，'i'，'o' 和 'u' 。
 */
public class LongestBeautifulSubstring {

    public static int longestBeautifulSubstring(String word) {
//        System.out.println("length:" + word.length());
//        int aIndex = word.indexOf('a');
//        if (aIndex < 0) {
//            return 0;
//        }else {
//            word = word.substring(aIndex);
//        }
//
//        char[] chars = word.toCharArray();
//        int result = 0;
//        Set hashSet = new HashSet();
//        int times = 0;
//        for (int index = word.indexOf('a'); index < chars.length; index++) {
//            int max = chars[index];
//            int length = 0;
//            hashSet.add(chars[index]);
//            for (int flag = index; flag < chars.length; flag++) {
//                if (chars[flag] >= max) {
//                    max = chars[flag];
//                    length++;
//                    hashSet.add(chars[flag]);
//                } else {
//                    index = flag - 1;
//                    break;
//                }
//                times++;
//            }
//            if (hashSet.size() != 5) {
//                hashSet = new HashSet();
//            } else {
//                result = Math.max(result, length);
//            }
//            if (chars.length - index < result) {
//                break;
//            }
//            times++;
//        }
//        System.out.println("times:" + times);
//        return result;

//        char[] chars = word.toCharArray();
//        int length = 0;
//        for (int index = 0;index < chars.length;index++){
//            if (chars[index] != 'a'){
//                continue;
//            }
//
//            length++;
//            int flag = index;
//            Set hashSet = new HashSet();
//            hashSet.add(chars[index]);
//            for (;flag<chars.length;flag++){
//                hashSet.add(chars[flag]);
//                if (hashSet.size() == 2){
//                    if(!"ae".equals(hashSet.toArray())){
//                        break;
//                    }
//                }
//            }
//        }
        return 0;
    }

}
